Memories may generally fall into two types: a volatile memory and a nonvolatile memory (NVM). The NVM includes multiple models, and one model is a persistent memory (PM). The persistent memory is a programming model that features direct random access and non-volatility, and may provide new storage behavior for a file system or a database by using a conventional virtual memory management interface.
In the prior art, when data in the persistent memory used as an internal storage device is migrated to an external storage device, first, the data is be read from the persistent memory to a random access memory (RAM), and then a scatter gather list (SGL) is constructed based on a physical address of the data in the RAM. A direct memory access (DMA) engine reads the data from the RAM based on the scatter gather list, and writes the data into a hard disk. A memory controller should be accessed during each operation performed on the persistent memory and the random access memory. Therefore, the memory controller is accessed three times in total in the foregoing data transmission procedure. Consequently, bandwidth of the memory controller is greatly affected.